package com.ruoyi.service.production;

import com.ruoyi.domain.production.MesProductionReturn;

import java.util.List;

/**
 * 生产退料单Service接口
 * 
 * @author ruoyi
 */
public interface IMesProductionReturnService
{
    /**
     * 查询生产退料单
     * 
     * @param returnId 生产退料单主键
     * @return 生产退料单
     */
    public MesProductionReturn selectMesProductionReturnByReturnId(Long returnId);

    /**
     * 查询生产退料单列表
     * 
     * @param mesProductionReturn 生产退料单
     * @return 生产退料单集合
     */
    public List<MesProductionReturn> selectMesProductionReturnList(MesProductionReturn mesProductionReturn);

    /**
     * 校验退料单编号是否唯一
     * 
     * @param returnCode 退料单编号
     * @param returnId 退料单ID（编辑时传入，新增时为null）
     * @return 结果
     */
    public boolean checkReturnCodeUnique(String returnCode, Long returnId);

    /**
     * 根据工单ID查询退料单列表
     * 
     * @param workOrderId 工单ID
     * @return 退料单集合
     */
    public List<MesProductionReturn> selectReturnListByWorkOrderId(Long workOrderId);

    /**
     * 根据领料单ID查询退料单列表
     * 
     * @param pickingId 领料单ID
     * @return 退料单集合
     */
    public List<MesProductionReturn> selectReturnListByPickingId(Long pickingId);

    /**
     * 根据仓库ID查询退料单列表
     * 
     * @param warehouseId 仓库ID
     * @return 退料单集合
     */
    public List<MesProductionReturn> selectReturnListByWarehouseId(Long warehouseId);

    /**
     * 新增生产退料单
     * 
     * @param mesProductionReturn 生产退料单
     * @return 结果
     */
    public int insertMesProductionReturn(MesProductionReturn mesProductionReturn);

    /**
     * 修改生产退料单
     * 
     * @param mesProductionReturn 生产退料单
     * @return 结果
     */
    public int updateMesProductionReturn(MesProductionReturn mesProductionReturn);

    /**
     * 批量删除生产退料单
     * 
     * @param returnIds 需要删除的生产退料单主键集合
     * @return 结果
     */
    public int deleteMesProductionReturnByReturnIds(Long[] returnIds);

    /**
     * 删除生产退料单信息
     * 
     * @param returnId 生产退料单主键
     * @return 结果
     */
    public int deleteMesProductionReturnByReturnId(Long returnId);

    /**
     * 审核生产退料单
     * 
     * @param returnId 退料单ID
     * @param status 审核状态
     * @return 结果
     */
    public int auditMesProductionReturn(Long returnId, String status);

    /**
     * 执行生产退料
     * 
     * @param returnId 退料单ID
     * @return 结果
     */
    public int executeMesProductionReturn(Long returnId);
}